// Copyright (c) Microsoft Corporation and contributors.  All Rights Reserved.  See License.txt in the project root for license information.
#pragma once

#include "../Stdafx.h"

#include "torch/script.h"

#include "Utils.h"

//// Copied from libtorch to share the type as an int8_t.
//enum TypeKind : int8_t {
//#define DEFINE_TYPE(T) T,
//    C10_FORALL_TYPES(DEFINE_TYPE)
//#undef DEFINE_TYPE
//};
//
//// API.

//// Loads a TorchScript module from a file.
//EXPORT_API(JITModule) THSJIT_loadModule(const char* filename);
//
//// Gets the number of submodules contained into the source module.
//EXPORT_API(long) THSJIT_getNumModules(const JITModule module);
//
//// Gets the sub-module contained into the input wrapper at the given index.
//EXPORT_API(JITModule) THSJIT_getSubModule(const JITModule module, const int index);
//
//// Gets the sub-module contained into the input wrapper with the given name.
//EXPORT_API(JITModule) THSJIT_getSubModuleByName(const JITModule module, const char* name);
//
//// Returns the number of inputs expected by the input module.
//EXPORT_API(int) THSJIT_getNumberOfInputs(const JITModule module);
//
//// Returns the number of outputs generated by the input module.
//EXPORT_API(int) THSJIT_getNumberOfOutputs(const JITModule module);
//
//// Returns the type of the nth-input.
//EXPORT_API(JITType) THSJIT_getInputType(const JITModule module, const int n);
//
//// Returns the type of the nth-output.
//EXPORT_API(JITType) THSJIT_getOutputType(const JITModule module, const int n);
//
//// Cast the input type to the proper type.
//EXPORT_API(void*) THSJIT_typeCast(const JITType type);
//
//// Returns the int8_t code for the input type.
//EXPORT_API(int8_t) THSJIT_typeKind(const JITType ttype);
//
//// Returns the int8_t code for the raw type of the tensor.
//EXPORT_API(int8_t) THSJIT_getScalarFromDimensionedTensorType(const JITDimensionedTensorType type);
//
//// Gets the number of dimensions of the input tensor type.
//EXPORT_API(int) THSJIT_getDimensionedTensorTypeDimensions(const JITDimensionedTensorType type);
//
//// Gets the number of device of the input tensor type.
//EXPORT_API(const char*) THSJIT_getDimensionedTensorDevice(const JITDimensionedTensorType type);
//
//// Forward pass over the input module using the input tensor.
//EXPORT_API(Tensor) THSJIT_forward(const JITModule module, const Tensor * tensorPtrs, const int length);
//
//// Disposes the module.
//EXPORT_API(void) THSJIT_moduleDispose(const JITModule module);
//
//// Disposes the type.
//EXPORT_API(void) THSJIT_typeDispose(const JITType type);
